package com.gitee.wsl.time.chinese.bean.eightchar

import com.gitee.wsl.time.chinese.util.LunarUtil

/**
 * 流月
 *
 * @author 6tail
 */
class LiuYue(
    private val liuNian: LiuNian,
    /**
     * 序数，0-11
     */
    val index: Int
) {
    val monthInChinese: String
        /**
         * 获取中文的月
         *
         * @return 中文月，如正
         */
        get() = LunarUtil.MONTH[index + 1]

    val ganZhi: String
        /**
         * 获取干支
         *
         *
         * 《五虎遁》
         * 甲己之年丙作首，
         * 乙庚之年戊为头，
         * 丙辛之年寻庚上，
         * 丁壬壬寅顺水流，
         * 若问戊癸何处走，
         * 甲寅之上好追求。
         *
         * @return 干支
         */
        get() {
            var offset = 0
            val yearGan: String = liuNian.ganZhi.substring(0, 1)
            if ("甲".equals(yearGan) || "己".equals(yearGan)) {
                offset = 2
            } else if ("乙".equals(yearGan) || "庚".equals(yearGan)) {
                offset = 4
            } else if ("丙".equals(yearGan) || "辛".equals(yearGan)) {
                offset = 6
            } else if ("丁".equals(yearGan) || "壬".equals(yearGan)) {
                offset = 8
            }
            val gan: String = LunarUtil.GAN[(index + offset) % 10 + 1]
            val zhi: String = LunarUtil.ZHI[(index + LunarUtil.BASE_MONTH_ZHI_INDEX) % 12 + 1]
            return gan + zhi
        }

    val xun: String
        /**
         * 获取所在旬
         * @return 旬
         */
        get() = LunarUtil.getXun(this.ganZhi)

    val xunKong: String
        /**
         * 获取旬空(空亡)
         * @return 旬空(空亡)
         */
        get() = LunarUtil.getXunKong(this.ganZhi)
}
